package Lee_code;

/**
 * @author blh
 * @date 2024年10月18日 16:39
 * 3191. 使二进制数组全部等于 1 的最少操作次数 I
 */
public class Lee_3191_1018 {
    public int minOperations(int[] nums) {
        int len = nums.length;
        int res = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 0 && i + 2 < len) {
                // 找到第一个零然后直接反转
                res++;
                for (int j = i; j <= i + 2; j++) {
                    reverse(nums, j);
                }
            }
            if (nums[i] == 0 && i + 2 >= len) {
                return -1;
            }
        }
        return res;
    }

    private void reverse(int[] nums, int j) {
        if (nums[j] == 1) {
            nums[j] = 0;
        } else if (nums[j] == 0) {
            nums[j] = 1;
        }
    }
}
